package 设计原则.单一原则;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;

/**
 * 上面代码违反单一职责原则，同一个方法我们让它去做文件读取，还让他去做内容分割；<br/>
 * 当有需求变更（需要更换加载文件，统计文本文件中有多少个句子）时，我们需要重写整个方法。
 *
 * 正例：
 * @author lxiaol
 * @date 2021年06月23日 18:50
 */
public class postive {

    public static void main(String[] args) throws IOException {

        //读取文件的内容
        StringBuilder sb = loadFile("E:\\1.txt");

        //对内容进行分割
        String[] words = getWords("[^a-zA-Z]+", sb);

        System.out.println(words.length);
    }


    /**
     * 读取文件的内容
     * @param fileLocation
     * @return
     * @throws IOException
     */
    public static StringBuilder loadFile(String fileLocation) throws IOException {

        //读取文件的内容
        Reader in = new FileReader(fileLocation);
        BufferedReader bufferedReader = new BufferedReader(in);

        String line;
        StringBuilder sb = new StringBuilder("");

        while ((line = bufferedReader.readLine()) != null) {
            sb.append(line);
            sb.append(" ");
        }

        bufferedReader.close();
        return sb;
    }

    /**
     * 对内容进行分割
     * @param regex
     * @param sb
     * @return
     */
    public static String[] getWords(String regex, StringBuilder sb){
        return  sb.toString().split(regex);
    }
}
